
import { KeyAble } from "../../cfw/pool/KeyAble";
import { ESize, EVector3 } from "../../engine/Math";
import { DIR } from "../../cfw/tools/Define";
import { ChangeStateAble } from "../ai/ChangeStateAble";
import { IEnvironment } from "../env/IEnvironment";
export default interface IGameObject<E extends IEnvironment = any> extends KeyAble, ChangeStateAble {

    init?(): void;
    //设置坐标
    setPosition(pos: EVector3): void;
    getPosition(): EVector3;
    //设置模型
    setModel(m: any): void;

    getModel(): any;
    // //设置环境
    setEnv(s: E): void;
    getEnv(): E;

    getParent(): any
    //坐标转换
    convertToWorldSpaceAR(v1: EVector3, v2: EVector3): EVector3;
    convertToNodeSpaceAR(v1: EVector3, v2: EVector3): EVector3;

    //获得角色的范围
    getSize(): ESize;

    addChild(node: any, index?: number): void;

    getNode(): any;

    get node(): any;

    getFaceDir(): DIR;

    setFaceDir(dir: DIR): void;

    getDisplayLayer?(): number;

    setVisible(f: boolean): void;

}